home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / demos / st_conn.lzh / 10KHZ.LZH / 10KHZ.S < prev    next >
Text File  |  1985-11-20  |  20KB  |  968 lines

  1.     MOVE.L    SP,A5
  2.     LEA        STACK,SP
  3.     MOVE.L    4(A5),A5
  4.     MOVE.L    $C(A5),D0
  5.     ADD.L        $14(A5),D0
  6.     ADD.L        $1C(A5),D0
  7.     ADD.L        #$100,D0
  8.     MOVE.L    D0,-(SP)
  9.     MOVE.L    A5,-(SP)
  10.     CLR        -(SP)
  11.     MOVE.W    #$4A,-(SP)
  12.     TRAP        #1
  13.     LEA        12(SP),SP
  14.  
  15.     CLR.L        -(SP)
  16.     MOVE        #$20,-(SP)
  17.     TRAP        #1
  18.     LEA        6(SP),SP
  19.     MOVE.L    D0,SAVE_STACK
  20.  
  21.     JSR        SAVE_INTERRUPTS
  22.     JSR        INPUT_MODULE_NAME
  23.     JSR        SET_SCREEN
  24.     JSR        INIT_MUSIC
  25.     JSR        INIT_INTERRUPTS
  26.  
  27.     JSR        PLAY_MUSIC
  28.  
  29. TOO_BAD
  30.     JSR        REINSTALL_INTERRUPTS
  31.  
  32.     MOVE.L    SAVE_STACK,-(SP)
  33.     MOVE        #$20,-(SP)
  34.     TRAP        #1
  35.     LEA        6(SP),SP
  36.     CLR        -(SP)
  37.     TRAP        #1
  38.  
  39. SAVE_INTERRUPTS
  40.     PEA        MOUSOFF
  41.     MOVE.W    #1,-(SP)
  42.     MOVE.W    #25,-(SP)
  43.     TRAP        #14
  44.     LEA        8(SP),SP
  45.     MOVE.L    $70.W,SAVE_VBL
  46.     MOVE.B    $FFFFFA07.W,MFP
  47.     MOVE.B    $FFFFFA09.W,MFP+1
  48.     MOVEM.L    $FFFF8240.W,D0-D7
  49.     MOVEM.L    D0-D7,SHIFTER
  50.     MOVE.B    $FFFF8260.W,SHIFTER+32
  51.     MOVE.L    $134.W,TIMERA
  52.     MOVE.B    $FFFFFA0B.W,TIMERA+4
  53.     MOVE.B    $FFFFFA0F.W,TIMERA+5
  54.     MOVE.B    $FFFFFA13.W,TIMERA+6
  55.     MOVE.B    $FFFFFA19.W,TIMERA+7
  56.     MOVE.B    $FFFFFA1F.W,TIMERA+8
  57.     RTS
  58.  
  59. INPUT_MODULE_NAME
  60.     MOVE.L    #INDICATION,-(SP)
  61.     MOVE        #9,-(SP)
  62.     TRAP        #1
  63.     LEA        6(SP),SP
  64.     PEA        FILENAME
  65.     MOVE.W    #$A,-(SP)
  66.     TRAP        #1
  67.     LEA        6(SP),SP
  68.     RTS
  69.  
  70. SET_SCREEN
  71.     MOVEM.L    NO_COLOR,D0-D7
  72.     MOVEM.L    D0-D7,$FFFF8240.W
  73.     MOVE.L    SCREEN2,D0
  74.     LSR.L        #8,D0
  75.     LEA        $FFFF8201.W,A0
  76.     MOVEP        D0,(A0)
  77.     MOVE.B    #0,$FFFF8260.W
  78.     MOVEM.L    PAL,D0-D7
  79.     MOVEM.L    D0-D7,$FFFF8240.W
  80.     LEA        $80000,A0
  81. RHA
  82.     MOVE.L    #0,-(A0)
  83.     CMP.L        #$70000,A0
  84.     BNE        RHA
  85.     RTS
  86.  
  87. INIT_MUSIC
  88.     CLR        -(SP)
  89.     MOVE.L    #FILENAME+2,-(SP)
  90.     MOVE        #$3D,-(SP)
  91.     TRAP        #1
  92.     LEA        8(SP),SP
  93.     MOVE.L    D0,D1
  94.     TST.W        D0
  95.     BMI        ERROR
  96.     MOVE.L    #BUFFER,-(SP)
  97.     MOVE.L    #$FFFFF,-(SP)
  98.     MOVE        D1,-(SP)
  99.     MOVE        #$3F,-(SP)
  100.     TRAP        #1
  101.     LEA        12(SP),SP
  102.     TST.L        D0
  103.     BMI        ERROR
  104.     MOVE        D1,-(SP)
  105.     MOVE        #$3E,-(SP)
  106.     TRAP        #1
  107.     LEA        4(SP),SP
  108.     TST.W        D0
  109.     BMI        ERROR
  110.  
  111.     LEA        BUFFER,A0
  112.     LEA        20+30*15(A0),A0
  113.     MOVEQ        #0,D0
  114.     MOVE.B    (A0)+,D0
  115.     MOVEQ        #0,D1
  116.     MOVE.B    (A0)+,D1
  117.     LEA        BUFFER,A0
  118.     LEA        30*16(A0),A0
  119.     ADD        D1,A0
  120.     MOVE.L    A0,PAT
  121.     LEA        BUFFER,A0
  122.     LEA        20+30*15+2(A0),A0
  123.     MOVEQ        #0,D1
  124.     MOVEQ        #0,D2
  125. HOW_MANY_PAT
  126.     MOVE.B    (A0)+,D1
  127.     CMP.B        D1,D2
  128.     BPL        CONT_HOW_MANY_PAT
  129.     MOVE.B    D1,D2
  130. CONT_HOW_MANY_PAT
  131.     DBRA        D0,HOW_MANY_PAT    
  132.     ADD.B        #1,D2
  133.     MULU        #1024,D2
  134.     MOVE.L    PAT,D0
  135.     ADD.L        D2,D0
  136.     MOVE.L    D0,A2
  137.     LEA        BUFFER,A0
  138.     LEA        20(A0),A0
  139.     LEA        INS,A1
  140.     LEA        16(A1),A1
  141.     MOVEQ        #15-1,D0
  142. READ_INS
  143.     MOVEQ        #0,D1
  144.     MOVE        22(A0),D1
  145.     LSL.L        #1,D1
  146.     MOVE.L    D1,(A1)
  147.     MOVE.L    D1,4(A1)
  148.     MOVEQ        #0,D1
  149.     MOVE        24(A0),D1
  150.     BEQ        CONT_READ_VOLUME
  151.     SUBQ        #1,D1
  152. CONT_READ_VOLUME
  153.     MOVE        D1,12(A1)
  154.     MOVEQ        #0,D1
  155.     MOVE        28(A0),D1
  156.     LSL.L        #1,D1
  157.     CMP.B        #2,D1
  158.     BNE        CONT_READ_INS
  159.     MOVEQ        #0,D1
  160. CONT_READ_INS
  161.     SWAP        D1
  162.     MOVE.L    D1,8(A1)
  163.     MOVE.L    (A1),D1
  164.     MOVE.L    A2,4(A1)
  165.     ADD.L        D1,A2
  166.     LEA        30(A0),A0
  167.     LEA        16(A1),A1
  168.     DBRA        D0,READ_INS
  169.  
  170.     LEA        INS,A0
  171.     LEA        16(A0),A0
  172.     LEA        BUFFER,A1
  173.     LEA        20(A1),A1
  174.     LEA        $68000,A2
  175.     MOVEQ        #15-1,D0
  176. REVERSE
  177.     MOVEQ        #0,D1
  178.     MOVE        22(A1),D1
  179.     BEQ        END_REVERSE_THIS_INS
  180.     LSL.L        #1,D1
  181.     SUBQ.L    #1,D1
  182.     MOVE.L    D1,D2
  183.     MOVE.L    4(A0),A3
  184. REV_1
  185.     MOVE.B    (A3)+,(A2)
  186.     ADD.B        #$80,(A2)+
  187.     DBRA        D1,REV_1
  188.     MOVE.L    4(A0),A3
  189. REV_2
  190.     MOVE.B    -(A2),(A3)+
  191.     DBRA        D2,REV_2
  192. END_REVERSE_THIS_INS
  193.     LEA        16(A0),A0
  194.     LEA        30(A1),A1
  195.     DBRA        D0,REVERSE
  196.     RTS
  197.  
  198. INIT_INTERRUPTS
  199. MFP_RESET
  200.     MOVE.B    #0,$FFFFFA07.W
  201.     MOVE.B    #0,$FFFFFA09.W
  202. YAMAHA_RESET
  203.     MOVE.B    #0,$FFFF8800.W
  204.     MOVE.B    #0,$FFFF8802.W
  205.     MOVE.B    #1,$FFFF8800.W
  206.     MOVE.B    #0,$FFFF8802.W
  207.     MOVE.B    #2,$FFFF8800.W
  208.     MOVE.B    #0,$FFFF8802.W
  209.     MOVE.B    #3,$FFFF8800.W
  210.     MOVE.B    #0,$FFFF8802.W
  211.     MOVE.B    #4,$FFFF8800.W
  212.     MOVE.B    #0,$FFFF8802.W
  213.     MOVE.B    #5,$FFFF8800.W
  214.     MOVE.B    #0,$FFFF8802.W
  215.     MOVE.B    #7,$FFFF8800.W
  216.     MOVE.B    #$FF,$FFFF8802.W
  217.     MOVE.B    #8,$FFFF8800.W
  218.     MOVE.B    #0,$FFFF8802.W
  219.     MOVE.B    #9,$FFFF8800.W
  220.     MOVE.B    #0,$FFFF8802.W
  221.     MOVE.B    #10,$FFFF8800.W
  222.     MOVE.B    #0,$FFFF8802.W
  223.     RTS
  224.  
  225. REINSTALL_INTERRUPTS
  226.     MOVEM.L    NO_COLOR,D0-D7
  227.     MOVEM.L    D0-D7,$FFFF8240.W
  228.     MOVE.L    SAVE_VBL,$70.W
  229.     MOVE.L    TIMERA,$134.W
  230.     MOVE.B    TIMERA+4,$FFFFFA0B.W
  231.     MOVE.B    TIMERA+5,$FFFFFA0F.W
  232.     MOVE.B    TIMERA+6,$FFFFFA13.W
  233.     MOVE.B    TIMERA+7,$FFFFFA19.W
  234.     MOVE.B    TIMERA+8,$FFFFFA1F.W
  235.     MOVE.B    MFP,$FFFFFA07.W
  236.     MOVE.B    MFP+1,$FFFFFA09.W
  237.     PEA        MOUSON
  238.     MOVE.W    #1,-(SP)
  239.     MOVE.W    #25,-(SP)
  240.     TRAP        #14
  241.     LEA        8(SP),SP
  242.     MOVE.L    #CLS,-(SP)
  243.     MOVE        #9,-(SP)
  244.     TRAP        #1
  245.     LEA        6(SP),SP
  246.     MOVEQ        #0,D0
  247.     MOVE.B    SHIFTER+32,D0
  248.     MOVE        D0,-(SP)
  249.     MOVE.L    #$78000,-(SP)
  250.     MOVE.L    #$78000,-(SP)
  251.     MOVE        #5,-(SP)
  252.     TRAP        #14
  253.     LEA        12(SP),SP
  254.     MOVEM.L    SHIFTER,D0-D7
  255.     MOVEM.L    D0-D7,$FFFF8240.W
  256.     RTS
  257.  
  258. ERROR
  259.     MOVE.L    #TOO_BAD,(SP)
  260.     RTS
  261.  
  262. PLAY_MUSIC
  263. ;GET MUSIC GOING
  264. ON    MOVE.W    #$2700,SR
  265.     LEA        PLAYER_DATA,A4
  266.     MOVE.W    #6,SPD+2
  267.     MOVE.B    #6,SPEED(A4)
  268.     MOVE.B    #1,POS(A4)
  269.     MOVE.B    SEQ-2,TRK(A4)
  270.     MOVE.L    #SEQ-1,MUS+2
  271.     LEA        OFF,A0
  272.     LEA        OFF,A1
  273.     LEA        OFF,A2
  274.     LEA        OFF,A3
  275.     CLR.L        D0
  276.     CLR.L        D1
  277.     CLR.L        D2
  278.     CLR.L        D3
  279.     MOVE.L    #$7F8,D7
  280.     LEA        $FFFF8800.W,A4
  281.     CLR.L        F0+2
  282.     CLR.L        F1+2
  283.     CLR.L        F2+2
  284.     CLR.L        F3+2
  285.     CLR.L        V0+2
  286.     CLR.L        V1+2
  287.     CLR.L        V2+2
  288.     CLR.L        V3+2
  289.     MOVE.L    #AMIGA,$134.W
  290.     MOVE.B    #0,$FFFFFA0B.W
  291.     MOVE.B    #0,$FFFFFA0F.W
  292.     MOVE.B    #0,$FFFFFA19.W
  293.     MOVE.B    #0,$FFFFFA1F.W
  294.     MOVE.B    #32,$FFFFFA13.W
  295.     MOVE.B    #0,$FFFFFA19.W
  296.     BCLR        #3,$FFFFFA17.W
  297.     MOVE.B    #61,$FFFFFA1F.W
  298.     MOVE.B    #1,$FFFFFA19.W
  299.     MOVE.B    #32,$FFFFFA07.W
  300.     MOVE.L    #VBL,$70.W
  301.     STOP        #$2300
  302. MAIN
  303. *    Put your program which use D6,A5,A6 here
  304.  
  305.     CMP.B        #$39,$FFFFFC02.W
  306.     BEQ        END_PLAYING_MUSIC
  307.     BRA        MAIN
  308.  
  309. AMIGA
  310.     SWAP        D0                    ;4(1/0)
  311.     SWAP        D1                    ;4(1/0)
  312.     SWAP        D2                    ;4(1/0)
  313.     SWAP        D3                    ;4(1/0)
  314. V0    SUB.L        #0,D0                ;16(3/0)
  315.     BMI.S        L0                    ;8(1/0)10
  316. V1    SUB.L        #0,D1                ;16(3/0)
  317.     BMI.S        L1                    ;8(1/0)10
  318. V2    SUB.L        #0,D2                ;16(3/0)
  319.     BMI.S        L2                    ;8(1/0)10
  320. V3    SUB.L        #0,D3                ;16(3/0)
  321.     BMI.S        L3                    ;8(1/0)10
  322. OUT    SWAP    D0                    ;4(1/0)
  323.     SWAP        D1                    ;4(1/0)
  324.     SWAP        D2                    ;4(1/0)
  325.     SWAP        D3                    ;4(1/0)
  326.     MOVEQ        #0,D4                ;4(1/0)
  327.     MOVEQ        #0,D5                ;4(1/0)
  328.     MOVE.B    0(A0,D0),D4        ;14(3/0)
  329.     MOVE.B    0(A1,D1),D5        ;14(3/0)
  330.     ADD.W        D5,D4                ;4(1/0)
  331.     MOVE.B    0(A2,D2),D5        ;14(3/0)
  332.     ADD.W        D5,D4                ;4(1/0)
  333.     MOVE.B    0(A3,D3),D5        ;14(3/0)
  334.     ADD.W        D5,D4                ;4(1/0)
  335.     ADD.W        D4,D4                ;4(1/0)
  336.     AND.W        D7,D4                ;4(1/0)
  337.     MOVE.L    SOUND(PC,D4),D5    ;18(4/0)
  338.     MOVE.W    SOUND+4(PC,D4),D4    ;14(3/0)
  339.     MOVEP.L    D5,(A4)                ;24(2/4)
  340.     MOVEP.W    D4,(A4)                ;16(2/2)
  341.     RTE
  342. L0    MOVE.L    #0,D0
  343. F0    MOVE.L    #0,V0+2
  344.     BRA        V1
  345. L1    MOVE.L    #0,D1
  346. F1    MOVE.L    #0,V1+2
  347.     BRA        V2
  348. L2    MOVE.L    #0,D2
  349. F2    MOVE.L    #0,V2+2
  350.     BRA        V3
  351. L3    MOVE.L    #0,D3
  352. F3    MOVE.L    #0,V3+2
  353.     BRA        OUT
  354. SOUND
  355.     DC.W    $80E,$90D,$A0C,0,$80F,$903,$A00,0
  356.     DC.W    $80F,$903,$A00,0,$80F,$903,$A00,0
  357.     DC.W    $80F,$903,$A00,0,$80F,$903,$A00,0
  358.     DC.W    $80F,$903,$A00,0,$80E,$90D,$A0B,0
  359.     DC.W    $80E,$90D,$A0B,0,$80E,$90D,$A0B,0
  360.     DC.W    $80E,$90D,$A0B,0,$80E,$90D,$A0B,0
  361.     DC.W    $80E,$90D,$A0B,0,$80E,$90D,$A0B,0
  362.     DC.W    $80E,$90D,$A0A,0,$80E,$90D,$A0A,0
  363.     DC.W    $80E,$90D,$A0A,0,$80E,$90D,$A0A,0
  364.     DC.W    $80E,$90C,$A0C,0,$80E,$90D,$A00,0
  365.     DC.W    $80D,$90D,$A0D,0,$80D,$90D,$A0D,0
  366.     DC.W    $80D,$90D,$A0D,0,$80D,$90D,$A0D,0
  367.     DC.W    $80D,$90D,$A0D,0,$80D,$90D,$A0D,0
  368.     DC.W    $80E,$90C,$A0B,0,$80E,$90C,$A0B,0
  369.     DC.W    $80E,$90C,$A0B,0,$80E,$90C,$A0B,0
  370.     DC.W    $80E,$90C,$A0B,0,$80E,$90C,$A0B,0
  371.     DC.W    $80E,$90C,$A0B,0,$80E,$90C,$A0B,0
  372.     DC.W    $80E,$90C,$A0A,0,$80E,$90C,$A0A,0
  373.     DC.W    $80E,$90C,$A0A,0,$80E,$90C,$A0A,0
  374.     DC.W    $80D,$90D,$A0C,0,$80D,$90D,$A0C,0
  375.     DC.W    $80E,$90C,$A09,0,$80E,$90C,$A09,0
  376.     DC.W    $80E,$90C,$A05,0,$80E,$90C,$A00,0
  377.     DC.W    $80E,$90C,$A00,0,$80E,$90B,$A0B,0
  378.     DC.W    $80E,$90B,$A0B,0,$80E,$90B,$A0B,0
  379.     DC.W    $80E,$90B,$A0B,0,$80E,$90B,$A0A,0
  380.     DC.W    $80E,$90B,$A0A,0,$80E,$90B,$A0A,0
  381.     DC.W    $80D,$90D,$A0B,0,$80D,$90D,$A0B,0
  382.     DC.W    $80D,$90D,$A0B,0,$80E,$90B,$A09,0
  383.     DC.W    $80E,$90B,$A09,0,$80E,$90B,$A09,0
  384.     DC.W    $80D,$90C,$A0C,0,$80D,$90D,$A0A,0
  385.     DC.W    $80E,$90B,$A07,0,$80E,$90B,$A00,0
  386.     DC.W    $80E,$90B,$A00,0,$80D,$90D,$A09,0
  387.     DC.W    $80D,$90D,$A09,0,$80E,$90A,$A09,0
  388.     DC.W    $80D,$90D,$A08,0,$80D,$90D,$A07,0
  389.     DC.W    $80D,$90D,$A04,0,$80D,$90D,$A00,0
  390.     DC.W    $80E,$90A,$A04,0,$80E,$909,$A09,0
  391.     DC.W    $80E,$909,$A09,0,$80D,$90C,$A0B,0
  392.     DC.W    $80E,$909,$A08,0,$80E,$909,$A08,0
  393.     DC.W    $80E,$909,$A07,0,$80E,$908,$A08,0
  394.     DC.W    $80E,$909,$A01,0,$80C,$90C,$A0C,0
  395.     DC.W    $80D,$90C,$A0A,0,$80E,$908,$A06,0
  396.     DC.W    $80E,$907,$A07,0,$80E,$908,$A00,0
  397.     DC.W    $80E,$907,$A05,0,